package user_interface.menu_glowne.widok;

import user_interface.menu_glowne.kontroler.Presenter;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class OknoGlowne extends JFrame implements ActionListener {
    JMenuItem metalIT;
    JMenuItem windowsIT;
    JMenuItem nimbusIT;

    public OknoGlowne() throws HeadlessException {
        ustawWidok();
        ustawMenu();
        ustawPanel();
    }

    private void ustawWidok() {
        setSize(400, 300);
        setTitle("Nauka słówek");
        setLocationRelativeTo(null);

        try {
            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Exception e1) {
            SwingUtilities.updateComponentTreeUI(this);
        }
    }

    private void ustawMenu() {
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        JMenu menuPlik = new JMenu("Plik");
        JMenuItem zamknijItem = new JMenuItem("Zamknij");

        JMenu menuNarzedzia = new JMenu("Narzędzia");
        JMenu submenuWyglad = new JMenu("Wygląd");
        nimbusIT = new JMenuItem("Nimbus");
        nimbusIT.addActionListener(this);
        windowsIT = new JMenuItem("Windows");
        windowsIT.addActionListener(this);
        metalIT = new JMenuItem("Metal");
        metalIT.addActionListener(this);

        JMenu menuPomoc = new JMenu("Pomoc");

        menuBar.add(menuPlik);
        menuPlik.add(zamknijItem);
        menuBar.add(menuNarzedzia);
        menuNarzedzia.add(submenuWyglad);
        submenuWyglad.add(nimbusIT);
        submenuWyglad.add(windowsIT);
        submenuWyglad.add(metalIT);
        menuBar.add(Box.createHorizontalGlue());
        menuBar.add(menuPomoc);
    }

    private void ustawPanel() {
        PanelGlowny panelGlowny = new PanelGlowny();
        add(panelGlowny);

        Presenter presenter = new Presenter();
        presenter.setDodajSłowkaBT(panelGlowny.getDodajSłowkaBT());
        presenter.setNaukaSlowekBT(panelGlowny.getNaukaSlowekBT());
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object z = e.getSource();
        if (z == nimbusIT) {
            try {
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (Exception e1) {

            }
            SwingUtilities.updateComponentTreeUI(this);
        } else if (z == metalIT) {
            try {
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
            } catch (Exception e1) {
            }
            SwingUtilities.updateComponentTreeUI(this);
        } else if (z == windowsIT) {
            try {
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            } catch (Exception e1) {
            }
            SwingUtilities.updateComponentTreeUI(this);
        }
    }
}
